package cn.iocoder.yudao.module.esim.api.esproduct;

import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.esim.api.esproduct.dto.EsProductDTO;
import cn.iocoder.yudao.module.esim.controller.admin.esproduct.vo.EsProductPageReqVO;
import cn.iocoder.yudao.module.esim.dal.dataobject.esproduct.EsProductDO;
import cn.iocoder.yudao.module.esim.service.esproduct.EsProductService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * Description:
 * Author: li
 * Date: 2024/3/20
 */
@Service
public class EsProductApiImpl implements EsProductApi {
    @Resource
    private EsProductService esProductService;

    @Override
    public List<EsProductDTO> getAllEsProducts() {
        int pageNo = 1;
        final List<EsProductDTO> productList = new ArrayList<>();

        while (true) {
            final EsProductPageReqVO pageReqVO = new EsProductPageReqVO();
            pageReqVO.setPageNo(pageNo);
            pageReqVO.setPageSize(100);

            final PageResult<EsProductDO> pageResult = esProductService.getEsProductPage(pageReqVO);
            final List<EsProductDO> list = pageResult.getList();
            if (CollUtil.isEmpty(list)) {
                break;
            }

            productList.addAll(BeanUtils.toBean(list, EsProductDTO.class));
            pageNo++;
        }

        return productList;
    }

    @Override
    public EsProductDTO getEsProduct(String id) {
        final EsProductDO esProduct = esProductService.getEsProduct(id);
        final EsProductDTO dto = BeanUtils.toBean(esProduct, EsProductDTO.class);
        return dto;
    }

}
